package com.collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListDemo2 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println("list = " + list);//objects = [one, two, three, four, five]


        /**
         * add(int index, E element)
         * 在指定位置插入指定元素在这个列表(可选操作)。
         */
        list.add(1, "six");
        System.out.println("list = " + list);//objects = [one, six, two, three, four, five]


        /**
         * remove(int index)
         * 这个列表中删除指定位置的元素(可选操作)。
         * 返回的是这个别删除的元素six
         */
        String remove = list.remove(1);
        System.out.println("objects = " + list);//objects = [one, two, three, four, five]
        System.out.println("remove = " + remove);//remove = six

        /**
         * subList(int fromIndex, int toIndex)
         * 返回一个指定的部分之间的这个列表视图 fromIndex,包容,和 toIndex,排斥。
         */
        List<Integer> list1 = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list1.add(i);
        }
        System.out.println("list1 = " + list1);//list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

        List<Integer> list2 = list1.subList(3, 8);
        System.out.println("list2 = " + list2);//list2 = [3, 4, 5, 6, 7]


        /**
         * 扩大集合list2，扩大10倍
         */
        for (int i = 0; i < list2.size(); i++) {
            int i1 = list2.get(i);
            i1 *= 10;
            list2.set(i, i1);
        }
        System.out.println("list2 = " + list2);//list2 = [30, 40, 50, 60, 70]

        /**
         * 这里即使没有改变list1的数据，数据也是变了，因为list1和list2都是一个对象
         * 对子集的操作就是对原集合的操作
         */
        System.out.println("list1 = " + list1);//list1 = [0, 1, 2, 30, 40, 50, 60, 70, 8, 9]


        /**
         * 需求
         * 删除list1 = [0, 1, 2, 30, 40, 50, 60, 70, 8, 9]的2-8的数据
         */
        list1.subList(2, 9).clear();
        System.out.println("list1 = " + list1);

    }
}
